package com.myrslok.module;

import org.jetbrains.annotations.NotNull;

import java.io.File;
import java.util.Set;

public interface ModuleSettings {

    @NotNull
    File getModuleRoot();

    /**
     * All production source dirs of module.
     * @return
     */
    @NotNull
    Set<File> getSrcDirs();

    /**
     * All test source dirs of module.
     * @return
     */
    @NotNull
    Set<File> getTestDirs();

    /**
     * The dir containing all Myrslok source build files.
     * @return
     */
    @NotNull
    File getBuildDir();

    /**
     * The dir where everything created by this module should be put (classes, jars, etc).
     * @return
     */
    @NotNull
    File getTargetDir();

    /**
     * This is where compiled production classes should end up.
     * @return
     */
    @NotNull
    File getTargetProdClassesDir();

    /**
     * This is where compiled test classes should end up.
     * @return
     */
    @NotNull
    File getTargetTestClassesDir();

    /**
     * This is where compiled Myrslok build classes should end up.
     * @return
     */
    @NotNull
    File getTargetBuildClassesDir();

    @NotNull
    Set<File> getProductionLibs();

    @NotNull
    Set<File> getTestLibs();
}
